package cn.good.yan.basics.t6;

import cn.good.yan.basics.t6.async.controller.AController;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.internet.MimeMessage;
import java.io.File;

/**
 * 高级操作
 *      1 异步处理
 *      2 定时任务
 *      3 邮件发送
 *         引入相关包：
 *         <dependency>
 *             <groupId>org.springframework.boot</groupId>
 *             <artifactId>spring-boot-starter-mail</artifactId>
 *         </dependency>
 *      4 缓存cache
 *         引入相关包：
 *         <dependency>
 *             <groupId>org.springframework.boot</groupId>
 *             <artifactId>spring-boot-starter-cache</artifactId>
 *         </dependency>
 *      启动类 开启 ：@EnableScheduling //开启注解版的定时任务
 *      启动类 开启 ：@EnableAsync //开启基于注解版的异步处理
 * @author shengren.yan
 * @create 2022-11-24
 */
@SpringBootTest
public class test6 {

    /**
     * 异步处理
     *     1 @EnableAsync  //开启基于注解版的异步处理（启动类加注解）
     *     2 异步处理的方法，增加  @Async 注解
     */
    @Test
    void test1() {
        AController controller = new AController();
    }

    /**
     * 定时任务
     *     1 @EnableScheduling  //开启注解版的定时任务（启动类加注解）
     *     2 定时方法，增加 @Scheduled(cron = "表达式") 注解
     */
    @Test
    void test2() {
//        SchController controller = new SchController();
    }

    @Autowired(required = false)
    JavaMailSenderImpl javaMailSender;

    /**
     * 邮件发送 1
     *  1 发送简单邮件
     */
    @Test
    void test3() {
        // 封装简单的邮件内容
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("放假通知");  // 标题
        message.setText("春节放假7天");
        // 发件人
        message.setFrom("821521880@qq.com");
        // 收件人
        message.setTo("279964575@qq.com");
        javaMailSender.send(message);
        System.out.println("发送成功");
    }
    /**
     * 邮件发送 1
     *  2 发送复杂邮件
     */
    @Test
    void test4() throws Exception{
        // 邮件内容
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        // 通过消息帮助对象来设置发送的内容 ,第二个参数为true表示可以发送附件
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
        // 标题
        messageHelper.setSubject("放假通知");
        // 第2个参数为true,才可以发送html代码
        String str = "<h1 style='color:red'>春节放假7天</h1>";
        messageHelper.setText(str, true);
        // 发送附件
        messageHelper.addAttachment("abc.jpg", new File("G:\\tu\\a1.jpg"));
        messageHelper.addAttachment("孙悟空.jpeg", new File("G:\\tu\\l2.jpeg"));
        messageHelper.addAttachment("aa.xlsx", new File("G:\\tu\\aa.xlsx"));

        // 发件人 （必须与配置文件里的 配置保持一致）
        messageHelper.setFrom("821521880@qq.com");
        // 收件人
        messageHelper.setTo("279964575@qq.com");

        javaMailSender.send(mimeMessage);
        System.out.println("发送成功");
    }

    // 缓存cache
    @Test
    void test5() throws Exception {
        // 设置缓存注解 @Cacheable
        // 更新缓存  @CachePut
        // 清理缓存  @CacheEvict
    }

}


